//
//  LGSNodeTypeSelectorDelegate.h
//  LogicSim
//
//  Created by Jeremy Pereira on 30/04/2012.
//  Copyright (c) 2012 Jeremy Pereira. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "LGSSheetDelegate.h"

/*!
 *  @brief Delegate for selecting an input and a list of nodes to map to.
 *
 *  The delegate object must contain an list of inputs which may be selected, 
 *  also a list of nodes to map to.
 *  The delegate should preserve the ordering for as long as the connection 
 *  selector is in use.
 */
@protocol LGSInputMappingSelectorDelegate <LGSSheetDelegate>

/*!
 *  @brief Return a list of the input names of the module we are doing a mapping
 *  for.
 *
 *  @param selector The selector that is asking for the names.
 *  @return An array of input node names as strings.  The ordering must be
 *  preserved between invocations
 */
-(NSArray*) moduleInputNamesForSelector: (id) selector;

/*!
 *  @brief Inform the delegate that a mapping has been made.
 *
 *  @param selector object that selected the node type.
 *  @param destIndex The index of the second node selected.
 *  @param inputName Module input name to be mapped.
 *  @param destInputName The name of the input connector on the destination node.
 */
-(void) nodeSelector: (id) selector
   selectedDestIndex: (size_t) destIndex
       selectedInput: (NSString*) inputName
   selectedDestInput: (NSString*) destInputName;

@end
